﻿
DROP FUNCTION IF EXISTS listarBairros();
DROP FUNCTION IF EXISTS listarRuas();
DROP FUNCTION IF EXISTS listarEspecies();
DROP FUNCTION IF EXISTS listarEspecies();
DROP FUNCTION IF EXISTS listarNomesPopulares();


-- retorna a lista de Bairros cadastrados --
CREATE OR REPLACE FUNCTION listarBairros() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome_bairro FROM bairro;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- retorna a lista de Ruas cadastrados --
CREATE OR REPLACE FUNCTION listarRuas() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome_rua FROM rua;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- retorna a lista de Espécies cadastrados --
CREATE OR REPLACE FUNCTION listarEspecies() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome_cientifico FROM especie;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- retorna a lista de Gêneros cadastrados --
CREATE OR REPLACE FUNCTION listarGeneros() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome_genero FROM genero;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- retorna a lista de Nomes Populares cadastrados --
CREATE OR REPLACE FUNCTION listarNomesPopulares() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome_popular FROM especie;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- exemplos de utilização --
SELECT * FROM listarBairros() AS (nome_bairro VARCHAR(40));
SELECT * FROM listarRuas() AS (nome_rua VARCHAR(60));
SELECT * FROM listarEspecies() AS (nome_especie VARCHAR(50));
SELECT * FROM listarGeneros() AS (nome_genero VARCHAR(30));
SELECT * FROM listarNomesPopulares() AS (nome_popular VARCHAR(50));